/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ch.uzh.ifi.seal.ssqa.model;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Issue</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getId <em>Id</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getHeadline <em>Headline</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getFoundInVersion <em>Found In Version</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#isReproducible <em>Reproducible</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getType <em>Type</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getPlatform <em>Platform</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getLocation <em>Location</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getDiscipline <em>Discipline</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getProduct <em>Product</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getAssembly <em>Assembly</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getPriority <em>Priority</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getSeverity <em>Severity</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getOriginator <em>Originator</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getSubmitter <em>Submitter</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getOwner <em>Owner</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getDescription <em>Description</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getParent <em>Parent</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getChildren <em>Children</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getTimeTracking <em>Time Tracking</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getUCM <em>UCM</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getNotes <em>Notes</em>}</li>
 *   <li>{@link ch.uzh.ifi.seal.ssqa.model.Issue#getActions <em>Actions</em>}</li>
 * </ul>
 * </p>
 *
 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue()
 * @model
 * @generated
 */
public interface Issue extends EObject {
	/**
	 * Returns the value of the '<em><b>Id</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Id</em>' attribute.
	 * @see #setId(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Id()
	 * @model id="true"
	 * @generated
	 */
	String getId();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getId <em>Id</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Id</em>' attribute.
	 * @see #getId()
	 * @generated
	 */
	void setId(String value);

	/**
	 * Returns the value of the '<em><b>Headline</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Headline</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Headline</em>' attribute.
	 * @see #setHeadline(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Headline()
	 * @model
	 * @generated
	 */
	String getHeadline();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getHeadline <em>Headline</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Headline</em>' attribute.
	 * @see #getHeadline()
	 * @generated
	 */
	void setHeadline(String value);

	/**
	 * Returns the value of the '<em><b>Found In Version</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Found In Version</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Found In Version</em>' attribute.
	 * @see #setFoundInVersion(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_FoundInVersion()
	 * @model
	 * @generated
	 */
	String getFoundInVersion();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getFoundInVersion <em>Found In Version</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Found In Version</em>' attribute.
	 * @see #getFoundInVersion()
	 * @generated
	 */
	void setFoundInVersion(String value);

	/**
	 * Returns the value of the '<em><b>Reproducible</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Reproducible</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Reproducible</em>' attribute.
	 * @see #setReproducible(boolean)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Reproducible()
	 * @model
	 * @generated
	 */
	boolean isReproducible();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#isReproducible <em>Reproducible</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reproducible</em>' attribute.
	 * @see #isReproducible()
	 * @generated
	 */
	void setReproducible(boolean value);

	/**
	 * Returns the value of the '<em><b>Type</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Type</em>' attribute.
	 * @see #setType(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Type()
	 * @model
	 * @generated
	 */
	String getType();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getType <em>Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Type</em>' attribute.
	 * @see #getType()
	 * @generated
	 */
	void setType(String value);

	/**
	 * Returns the value of the '<em><b>Platform</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Platform</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Platform</em>' attribute.
	 * @see #setPlatform(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Platform()
	 * @model
	 * @generated
	 */
	String getPlatform();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getPlatform <em>Platform</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Platform</em>' attribute.
	 * @see #getPlatform()
	 * @generated
	 */
	void setPlatform(String value);

	/**
	 * Returns the value of the '<em><b>Location</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Location</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Location</em>' attribute.
	 * @see #setLocation(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Location()
	 * @model
	 * @generated
	 */
	String getLocation();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getLocation <em>Location</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Location</em>' attribute.
	 * @see #getLocation()
	 * @generated
	 */
	void setLocation(String value);

	/**
	 * Returns the value of the '<em><b>Discipline</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Discipline</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Discipline</em>' attribute.
	 * @see #setDiscipline(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Discipline()
	 * @model
	 * @generated
	 */
	String getDiscipline();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getDiscipline <em>Discipline</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Discipline</em>' attribute.
	 * @see #getDiscipline()
	 * @generated
	 */
	void setDiscipline(String value);

	/**
	 * Returns the value of the '<em><b>Product</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Product</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Product</em>' attribute.
	 * @see #setProduct(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Product()
	 * @model
	 * @generated
	 */
	String getProduct();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getProduct <em>Product</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Product</em>' attribute.
	 * @see #getProduct()
	 * @generated
	 */
	void setProduct(String value);

	/**
	 * Returns the value of the '<em><b>Assembly</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Assembly</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Assembly</em>' attribute.
	 * @see #setAssembly(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Assembly()
	 * @model
	 * @generated
	 */
	String getAssembly();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getAssembly <em>Assembly</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Assembly</em>' attribute.
	 * @see #getAssembly()
	 * @generated
	 */
	void setAssembly(String value);

	/**
	 * Returns the value of the '<em><b>Priority</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Priority</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Priority</em>' attribute.
	 * @see #setPriority(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Priority()
	 * @model
	 * @generated
	 */
	String getPriority();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getPriority <em>Priority</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Priority</em>' attribute.
	 * @see #getPriority()
	 * @generated
	 */
	void setPriority(String value);

	/**
	 * Returns the value of the '<em><b>Severity</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Severity</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Severity</em>' attribute.
	 * @see #setSeverity(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Severity()
	 * @model
	 * @generated
	 */
	String getSeverity();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getSeverity <em>Severity</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Severity</em>' attribute.
	 * @see #getSeverity()
	 * @generated
	 */
	void setSeverity(String value);

	/**
	 * Returns the value of the '<em><b>Originator</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Originator</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Originator</em>' reference.
	 * @see #setOriginator(Person)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Originator()
	 * @model
	 * @generated
	 */
	Person getOriginator();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getOriginator <em>Originator</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Originator</em>' reference.
	 * @see #getOriginator()
	 * @generated
	 */
	void setOriginator(Person value);

	/**
	 * Returns the value of the '<em><b>Submitter</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Submitter</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Submitter</em>' reference.
	 * @see #setSubmitter(Person)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Submitter()
	 * @model
	 * @generated
	 */
	Person getSubmitter();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getSubmitter <em>Submitter</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Submitter</em>' reference.
	 * @see #getSubmitter()
	 * @generated
	 */
	void setSubmitter(Person value);

	/**
	 * Returns the value of the '<em><b>Owner</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Owner</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Owner</em>' reference.
	 * @see #setOwner(Person)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Owner()
	 * @model
	 * @generated
	 */
	Person getOwner();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getOwner <em>Owner</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Owner</em>' reference.
	 * @see #getOwner()
	 * @generated
	 */
	void setOwner(Person value);

	/**
	 * Returns the value of the '<em><b>Description</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Description</em>' attribute.
	 * @see #setDescription(String)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Description()
	 * @model annotation="teneo.jpa appinfo='@Column(length=\"100000\")'"
	 * @generated
	 */
	String getDescription();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getDescription <em>Description</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Description</em>' attribute.
	 * @see #getDescription()
	 * @generated
	 */
	void setDescription(String value);

	/**
	 * Returns the value of the '<em><b>Parent</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Parent</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Parent</em>' reference.
	 * @see #setParent(Issue)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Parent()
	 * @model
	 * @generated
	 */
	Issue getParent();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getParent <em>Parent</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Parent</em>' reference.
	 * @see #getParent()
	 * @generated
	 */
	void setParent(Issue value);

	/**
	 * Returns the value of the '<em><b>Children</b></em>' containment reference list.
	 * The list contents are of type {@link ch.uzh.ifi.seal.ssqa.model.Issue}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Children</em>' containment reference list.
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Children()
	 * @model containment="true"
	 * @generated
	 */
	EList<Issue> getChildren();

	/**
	 * Returns the value of the '<em><b>Time Tracking</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Time Tracking</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Time Tracking</em>' reference.
	 * @see #setTimeTracking(TimeTracking)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_TimeTracking()
	 * @model
	 * @generated
	 */
	TimeTracking getTimeTracking();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getTimeTracking <em>Time Tracking</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Time Tracking</em>' reference.
	 * @see #getTimeTracking()
	 * @generated
	 */
	void setTimeTracking(TimeTracking value);

	/**
	 * Returns the value of the '<em><b>UCM</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>UCM</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>UCM</em>' reference.
	 * @see #setUCM(UcmActivity)
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_UCM()
	 * @model
	 * @generated
	 */
	UcmActivity getUCM();

	/**
	 * Sets the value of the '{@link ch.uzh.ifi.seal.ssqa.model.Issue#getUCM <em>UCM</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>UCM</em>' reference.
	 * @see #getUCM()
	 * @generated
	 */
	void setUCM(UcmActivity value);

	/**
	 * Returns the value of the '<em><b>Notes</b></em>' reference list.
	 * The list contents are of type {@link ch.uzh.ifi.seal.ssqa.model.Note}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Notes</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Notes</em>' reference list.
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Notes()
	 * @model
	 * @generated
	 */
	EList<Note> getNotes();

	/**
	 * Returns the value of the '<em><b>Actions</b></em>' containment reference list.
	 * The list contents are of type {@link ch.uzh.ifi.seal.ssqa.model.Action}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Actions</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Actions</em>' containment reference list.
	 * @see ch.uzh.ifi.seal.ssqa.model.ModelPackage#getIssue_Actions()
	 * @model containment="true"
	 * @generated
	 */
	EList<Action> getActions();

} // Issue
